1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.purple.win32;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.giochannel;
34 import core.stdc.time;
35 import core.stdc.config;
36 
37 extern (C):
38 
39 alias int function () FARPROC;
40 
41 struct timeval
42 {
43 	c_long tv_sec;
44 	c_long tv_usec;
45 }
46 
47 struct timezone
48 {
49 	int tz_minuteswest;
50 	int tz_dsttime;
51 }
52 
53 struct hostent
54 {
55 	char* h_name;
56 	char** h_aliases;
57 	short h_addrtype;
58 	short h_length;
59 	char** h_addr_list;
60 }
61 
62 struct in_addr
63 {
64 	union
65 	{
66 		struct
67 		{
68 			ubyte s_b1;
69 			ubyte s_b2;
70 			ubyte s_b3;
71 			ubyte s_b4;
72 		}
73 		struct
74 		{
75 			ushort s_w1;
76 			ushort s_w2;
77 		}
78 		c_ulong S_addr;
79 	}
80 }
81 
82 struct sockaddr
83 {
84 	ushort sa_family;
85 	char[14] sa_data;
86 }
87 
88 version(Derelict_Link_Static)
89 {
90     extern( C ) nothrow 
91     {
92         const(char)* wpurple_get_timezone_abbreviation(const(tm)* tm);
93         int wpurple_socket(int domain, int style, int protocol);
94         int wpurple_connect(int socket, sockaddr* addr, c_ulong length);
95         int wpurple_getsockopt(int socket, int level, int optname, void* optval, int* optlenptr);
96         int wpurple_setsockopt(int socket, int level, int optname, const(void)* optval, int optlen);
97         int wpurple_getsockname(int socket, sockaddr* addr, int* lenptr);
98         int wpurple_bind(int socket, sockaddr* addr, int length);
99         int wpurple_listen(int socket, uint n);
100         int wpurple_sendto(int socket, const(void)* buf, size_t len, int flags, const(sockaddr)* to, int tolen);
101         int wpurple_recv(int fd, void* buf, size_t len, int flags);
102         int wpurple_send(int fd, const(void)* buf, uint size, int flags);
103         int wpurple_inet_aton(const(char)* name, in_addr* addr);
104         const(char)* wpurple_inet_ntop(int af, const(void)* src, char* dst, int cnt);
105         int wpurple_inet_pton(int af, const(char)* src, void* dst);
106         hostent* wpurple_gethostbyname(const(char)* name);
107         char* wpurple_strerror(int errornum);
108         int wpurple_fcntl(int socket, int command, ...);
109         int wpurple_ioctl(int fd, int command, void* opt);
110         int wpurple_gettimeofday(timeval* p, timezone* z);
111         tm* wpurple_localtime_r(const(time_t)* time, tm* resultp);
112         int wpurple_read(int fd, void* buf, uint size);
113         int wpurple_write(int fd, const(void)* buf, uint size);
114         int wpurple_close(int fd);
115         int wpurple_gethostname(char* name, size_t size);
116         int wpurple_rename(const(char)* oldname, const(char)* newname);
117         FARPROC wpurple_find_and_loadproc(const(char)* dllname, const(char)* procedure);
118         gboolean wpurple_read_reg_dword(void* rootkey, const(char)* subkey, const(char)* valname, c_ulong* result);
119         char* wpurple_read_reg_string(void* rootkey, const(char)* subkey, const(char)* valname);
120         gboolean wpurple_write_reg_string(void* rootkey, const(char)* subkey, const(char)* valname, const(char)* value);
121         char* wpurple_escape_dirsep(const(char)* filename);
122         GIOChannel* wpurple_g_io_channel_win32_new_socket(int socket);
123         gchar* wpurple_get_special_folder(int folder_type);
124         const(char)* wpurple_install_dir();
125         const(char)* wpurple_lib_dir();
126         const(char)* wpurple_locale_dir();
127         const(char)* wpurple_data_dir();
128         void wpurple_init();
129         void wpurple_cleanup();
130         c_long wpurple_get_tz_offset();
131     }
132 }
133 else
134 {
135     extern( C ) nothrow 
136     {
137         alias da_wpurple_get_timezone_abbreviation = const(char)* function(const(tm)* tm);															
138         alias da_wpurple_socket = int function(int domain, int style, int protocol);																
139         alias da_wpurple_connect = int function(int socket, sockaddr* addr, c_ulong length);														
140         alias da_wpurple_getsockopt = int function(int socket, int level, int optname, void* optval, int* optlenptr);								
141         alias da_wpurple_setsockopt = int function(int socket, int level, int optname, const(void)* optval, int optlen);							
142         alias da_wpurple_getsockname = int function(int socket, sockaddr* addr, int* lenptr);														
143         alias da_wpurple_bind = int function(int socket, sockaddr* addr, int length);																
144         alias da_wpurple_listen = int function(int socket, uint n);																					
145         alias da_wpurple_sendto = int function(int socket, const(void)* buf, size_t len, int flags, const(sockaddr)* to, int tolen);				
146         alias da_wpurple_recv = int function(int fd, void* buf, size_t len, int flags);																
147         alias da_wpurple_send = int function(int fd, const(void)* buf, uint size, int flags);														
148         alias da_wpurple_inet_aton = int function(const(char)* name, in_addr* addr);																
149         alias da_wpurple_inet_ntop = const(char)* function(int af, const(void)* src, char* dst, int cnt);											
150         alias da_wpurple_inet_pton = int function(int af, const(char)* src, void* dst);																
151         alias da_wpurple_gethostbyname = hostent* function(const(char)* name);																		
152         alias da_wpurple_strerror = char* function(int errornum);																					
153         alias da_wpurple_fcntl = int function(int socket, int command, ...);																		
154         alias da_wpurple_ioctl = int function(int fd, int command, void* opt);																		
155         alias da_wpurple_gettimeofday = int function(timeval* p, timezone* z);																		
156         alias da_wpurple_localtime_r = tm* function(const(time_t)* time, tm* resultp);																
157         alias da_wpurple_read = int function(int fd, void* buf, uint size);																			
158         alias da_wpurple_write = int function(int fd, const(void)* buf, uint size);																	
159         alias da_wpurple_close = int function(int fd);																								
160         alias da_wpurple_gethostname = int function(char* name, size_t size);																		
161         alias da_wpurple_rename = int function(const(char)* oldname, const(char)* newname);															
162         alias da_wpurple_find_and_loadproc = FARPROC function(const(char)* dllname, const(char)* procedure);										
163         alias da_wpurple_read_reg_dword = gboolean function(void* rootkey, const(char)* subkey, const(char)* valname, c_ulong* result);				
164         alias da_wpurple_read_reg_string = char* function(void* rootkey, const(char)* subkey, const(char)* valname);								
165         alias da_wpurple_write_reg_string = gboolean function(void* rootkey, const(char)* subkey, const(char)* valname, const(char)* value);		
166         alias da_wpurple_escape_dirsep = char* function(const(char)* filename);																		
167         alias da_wpurple_g_io_channel_win32_new_socket = GIOChannel* function(int socket);															
168         alias da_wpurple_get_special_folder = gchar* function(int folder_type);																		
169         alias da_wpurple_install_dir = const(char)* function();																						
170         alias da_wpurple_lib_dir = const(char)* function();																							
171         alias da_wpurple_locale_dir = const(char)* function();																						
172         alias da_wpurple_data_dir = const(char)* function();																						
173         alias da_wpurple_init = void function();																									
174         alias da_wpurple_cleanup = void function();																									
175         alias da_wpurple_get_tz_offset = c_long function();	
176     }
177 
178     __gshared
179     {
180         da_wpurple_get_timezone_abbreviation wpurple_get_timezone_abbreviation; 
181         da_wpurple_socket wpurple_socket; 
182         da_wpurple_connect wpurple_connect; 
183         da_wpurple_getsockopt wpurple_getsockopt; 
184         da_wpurple_setsockopt wpurple_setsockopt; 
185         da_wpurple_getsockname wpurple_getsockname; 
186         da_wpurple_bind wpurple_bind; 
187         da_wpurple_listen wpurple_listen; 
188         da_wpurple_sendto wpurple_sendto; 
189         da_wpurple_recv wpurple_recv; 
190         da_wpurple_send wpurple_send; 
191         da_wpurple_inet_aton wpurple_inet_aton; 
192         da_wpurple_inet_ntop wpurple_inet_ntop; 
193         da_wpurple_inet_pton wpurple_inet_pton; 
194         da_wpurple_gethostbyname wpurple_gethostbyname; 
195         da_wpurple_strerror wpurple_strerror; 
196         da_wpurple_fcntl wpurple_fcntl; 
197         da_wpurple_ioctl wpurple_ioctl; 
198         da_wpurple_gettimeofday wpurple_gettimeofday; 
199         da_wpurple_localtime_r wpurple_localtime_r; 
200         da_wpurple_read wpurple_read; 
201         da_wpurple_write wpurple_write; 
202         da_wpurple_close wpurple_close; 
203         da_wpurple_gethostname wpurple_gethostname; 
204         da_wpurple_rename wpurple_rename; 
205         da_wpurple_find_and_loadproc wpurple_find_and_loadproc; 
206         da_wpurple_read_reg_dword wpurple_read_reg_dword; 
207         da_wpurple_read_reg_string wpurple_read_reg_string; 
208         da_wpurple_write_reg_string wpurple_write_reg_string; 
209         da_wpurple_escape_dirsep wpurple_escape_dirsep; 
210         da_wpurple_g_io_channel_win32_new_socket wpurple_g_io_channel_win32_new_socket; 
211         da_wpurple_get_special_folder wpurple_get_special_folder; 
212         da_wpurple_install_dir wpurple_install_dir; 
213         da_wpurple_lib_dir wpurple_lib_dir; 
214         da_wpurple_locale_dir wpurple_locale_dir; 
215         da_wpurple_data_dir wpurple_data_dir; 
216         da_wpurple_init wpurple_init; 
217         da_wpurple_cleanup wpurple_cleanup; 
218         da_wpurple_get_tz_offset wpurple_get_tz_offset; 
219     }
220 }